home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / SNDLIST- / ABOUT.C next >
Text File  |  1988-11-10  |  2KB  |  87 lines

  1. /*
  2.     Sound lister
  3.     "About.c"
  4. */
  5.  
  6. #include <DialogMgr.h>
  7. #include <EventMgr.h>
  8. #include <FontMgr.h>
  9. #include <ResourceMgr.h>
  10. #include "SndList.h"
  11.     
  12. extern short DlgFont: 0xAFA;
  13.  
  14. /* ----- Get long version message from 'vers' resource ----------------- */
  15.  
  16. static void GetVersion(id, message)
  17. register short id;
  18. register unsigned char *message;
  19. {
  20.     register Handle h;
  21.     register unsigned char *p;
  22.  
  23.     if (h = Get1Resource('vers', id)) {
  24.         p = (unsigned char *)(*h);
  25.         p += 7 + p[6];
  26.         BlockMove(p, message, (long)(p[0] + 1));
  27.         ReleaseResource(h);
  28.     } else
  29.         message[0] = 0;
  30. }
  31.  
  32. /* ----- Draw user item in dialog box ---------------------------------- */
  33.  
  34. static pascal void DrawUser(dialog, item)    /* Called by Dialog Manager */
  35. register DialogPtr dialog;
  36. register short item;
  37. {
  38.     register Handle h;
  39.     short type;
  40.     Handle itemHdl;
  41.     Rect box;
  42.  
  43.     GetDItem(dialog, item, &type, &itemHdl, &box);
  44.     if (h = GetResource('ICN#', APPL)) {
  45.         HLock(h);
  46.         PlotIcon(&box, h);
  47.         HUnlock(h);
  48.     }
  49. }
  50.  
  51. /* ----- About ... ----------------------------------------------------- */
  52.  
  53. void About()
  54. {
  55.     register DialogPtr dialog;
  56.     register long heap;
  57.     long grow;
  58.     short item;
  59.     short font;
  60.     unsigned char s[256];
  61.     Handle itemHdl;
  62.     Rect box;
  63.     short type;
  64.  
  65.     heap = MaxMem(&grow);
  66.     font = DlgFont;            /* Save current dialog font */
  67.     DlgFont = geneva;
  68.     CenterDialog('DLOG', AboutDialog, &Bounds);
  69.     if (dialog = GetNewDialog(AboutDialog, 0L, -1L)) {
  70.         GetVersion(2, s);
  71.         SetEText(dialog, AboutText, s);
  72.         GetVersion(1, s);
  73.         SetEText(dialog, AboutVers, s);
  74.         NumToString(heap, s);
  75.         SetEText(dialog, AboutHeap, s);
  76.         GetDItem(dialog, AboutIcon, &type, &itemHdl, &box);
  77.         SetDItem(dialog, AboutIcon, type, &DrawUser, &box);
  78.         ShowWindow(dialog);
  79.         Play(AboutSnd);
  80.         do
  81.             ModalDialog(0L, &item);
  82.         while (item != AboutOk);
  83.         DisposDialog(dialog);
  84.     }
  85.     DlgFont = font;            /* Restore dialog font */
  86. }
  87.